#ifndef _EB0_DEFAULT_WINDOW_LISTENER_H_
#define _EB0_DEFAULT_WINDOW_LISTENER_H_

// To be inherited with its functions altered through polymorphism
// The window that has had the event called upon is passed as an argument
// This allows a WindowListener to be attached to multiple windows

#include <EB0/Prereq.h>
#include <EB0/Window/WindowListener.h>

namespace EB0
{
namespace Window
{
	class DefaultWindowListener : public WindowListener
	{
		friend class RenderWindow;

	public:
		DefaultWindowListener();
		~DefaultWindowListener();

	protected:
		virtual void onClose(RenderWindow* window);
		virtual void onResize(RenderWindow* window, const unsigned int width, const unsigned int height);
		virtual void onGainFocus(RenderWindow* window);
		virtual void onLoseFocus(RenderWindow* window);

		virtual void onKeyPress(RenderWindow* window, const sf::Event::KeyEvent& key);
	};
} // namespace Window
}

#endif // _EB0_DEFAULT_WINDOW_LISTENER_H_